from mcp.server.fastmcp import FastMCP, Context
import subprocess
import json

mcp = FastMCP("Xfce4 Places Plugin MCP Server")
"""
面向软件：xfce4-places-plugin

所有 MCP tool 列表：
1. xfce4_popup_places_show - 显示位置弹出窗口
   用途：调用 xfce4-popup-places 命令显示位置菜单
   参数：无
   返回：统一 JSON 结构

2. xfce4_popup_places_pointer - 使用指针模式显示位置弹出窗口
   用途：调用 xfce4-popup-places 命令，使用指针模式显示位置菜单
   参数：无
   返回：统一 JSON 结构

3. xfce4_popup_places_help - 显示帮助信息
   用途：调用 xfce4-popup-places 命令显示帮助信息
   参数：无
   返回：统一 JSON 结构

4. xfce4_popup_places_version - 显示版本信息
   用途：调用 xfce4-popup-places 命令显示版本信息
   参数：无
   返回：统一 JSON 结构

所有工具返回的统一 JSON 结构：
{
  "success": bool,      # 命令是否成功执行
  "command": str,       # 实际执行的命令
  "exit_code": int,     # 命令退出码
  "stdout": str,        # 标准输出内容
  "stderr": str         # 标准错误内容
}
"""

@mcp.tool()
def xfce4_popup_places_show():
    """
    显示 xfce4 位置弹出窗口
    
    返回：
        JSON 结构：包含命令执行结果的标准输出、标准错误和退出码
    """
    command = ["xfce4-popup-places"]
    result = subprocess.run(command, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(command),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def xfce4_popup_places_pointer():
    """
    使用指针模式显示 xfce4 位置弹出窗口
    
    返回：
        JSON 结构：包含命令执行结果的标准输出、标准错误和退出码
    """
    command = ["xfce4-popup-places", "-p"]
    result = subprocess.run(command, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(command),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def xfce4_popup_places_help():
    """
    显示 xfce4-popup-places 命令的帮助信息
    
    返回：
        JSON 结构：包含命令执行结果的标准输出、标准错误和退出码
    """
    command = ["xfce4-popup-places", "-h"]
    result = subprocess.run(command, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(command),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

@mcp.tool()
def xfce4_popup_places_version():
    """
    显示 xfce4-popup-places 命令的版本信息
    
    返回：
        JSON 结构：包含命令执行结果的标准输出、标准错误和退出码
    """
    command = ["xfce4-popup-places", "-V"]
    result = subprocess.run(command, capture_output=True, text=True)
    
    return {
        "success": result.returncode == 0,
        "command": " ".join(command),
        "exit_code": result.returncode,
        "stdout": result.stdout,
        "stderr": result.stderr
    }

if __name__ == "__main__":
    mcp.run()